package com.xbongbong.pro.statistic.result.pojo;

import com.xbongbong.paas.enums.AggTypeEnum;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * 统计表pojo
 * @author yuqian
 * @version v1.0
 * @date 2019/2/19 19:46
 * @since v1.0
 */
@Getter
@Setter
@ToString
public class ChartStatisticsPojo implements Serializable{
    private static final long serialVersionUID = 3794150790962412488L;

    /**
     * 多表的时候”&“符号前的attr对应的是映射后的attr
     */
    private String outKey;
    
    private StringBuffer parentKey;

    private Long formId;

    private String dateGroupType;

    /**
     * 表头的唯一值
     * 多表的时候对应的是originalAttr&fieldType
     */
    private String key;
    /**
     * 解析后的值
     */
    private String value;
    /**
     * ES原始值 解析前的值
     */
    private String originValue;
    /**
     * 对应的数目计数
     */
    private Long docCount;
    /**
     * 下一层的chart
     */
    private List<LinkedHashMap<String,ChartStatisticsPojo>> sub;

    private List<ChartStatisticsPojo> child;
    /**
     * 
     */
    private Map<String,ChartStatisticsPojo> childMap;

    /**
     * 是否是分组字段
     */
    private Boolean head = false;

    /**
     * 是否是汇总字段
     */
    private Boolean isLeaf = false;

    /**
     * 为小计或总计字段
     */
    private Boolean isSummary = false;

    /**
     * 每个汇总字段的所有值（格式化后的）
     */
    private List<String> values;

    /**
     * 每个汇总字段的原始值（格式化前的）
     */
    private List<String> originValues;

    /**
     * 预警值
     */
    private List<WarningValuePojo> warningValues;

    /**
     * 聚合类型
     */
    private AggTypeEnum aggTypeEnum;
    
    /**
     * 统计值pojo
     */
    private FieldAttrPojo summaryFieldAttrPojo;

    /**
     * 日期pojo
     */
    private FieldAttrPojo dateFieldAttrPojo;

    /**
     * 图表钻取功能使用 - 统计表的结果处(result接口)
     * 该值为down，字段就可以下钻，该值为up，字段就可以上卷
     */
    private String drillDir;

    public ChartStatisticsPojo () {

    }
    public ChartStatisticsPojo (String key, String value, Long docCount) {
        this.key = key;
        this.value = value;
        this.docCount = docCount;
    }

    public ChartStatisticsPojo(String key, String value) {
        this.key = key;
        this.value = value;
    }

    public ChartStatisticsPojo(List<String> values) {
        this.values = values;
    }
}
